#include <cstdio>
#include <algorithm>
#include <cstring>
#define _clr(x,a) memset(x,a,sizeof(x));
using namespace std;
const int N=105;
const int INF=0x3f3f3f3f;
int n,m,k,s;
//dp[i][j]表示在杀i个怪物的前提下，容忍度为j获得的最大经验值
int dp[N][N];
//经验
int v[N];
//忍耐度
int w[N];
int main(void){
    freopen("data.txt","r",stdin);
    while(~scanf("%d%d%d%d",&n,&m,&k,&s)){
        _clr(v,0);
        _clr(w,0);
        _clr(dp,0);
        for(int i=0;i<k;i++){
            scanf("%d%d",&v[i],&w[i]);
        }
        int ans=INF;
        //怪物种类
        for(int i=0;i<k;i++){
            //忍耐度
            for(int j=w[i];j<=m;j++){
                //杀怪个数
                for(int l=1;l<=s;l++){
                    dp[l][j]=max(dp[l][j],dp[l-1][j-w[i]]+v[i]);
                    //足够升级
                    if(dp[l][j]>=n){
                        ans=min(ans,j);
                    }
                }
            }
        }
        if(ans==INF){
            printf("-1\n");
        }
        else{
            printf("%d\n",m-ans);
        }
    }
    return 0;
}
